
package com.twb.system.service;

import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSONObject;
import com.twb.core.base.entity.TwbPageInfo;
import com.twb.core.base.service.IBaseService;
import com.twb.system.entity.twbTenantConfig.TwbTenantConfig;
import com.twb.system.entity.twbTenantConfig.dto.SearchTenantConfigDto;
import com.twb.system.entity.twbTenantConfig.dto.TenantConfigWxCpDto;
import com.twb.system.entity.twbTenantConfig.vo.SaveTenantConfigVo;
import com.twb.system.entity.twbTenantConfig.vo.SearchTenantConfigVo;
import com.twb.system.entity.twbTenantConfig.vo.UpdateTenantConfigByIdVo;

/**
 * @author DSY
 * @ClassName: ITenantConfigService
 * @Description: 租户配置管理
 * @date 2022-12-30 16:00:28
 */
public interface ITwbTenantConfigService extends IBaseService<TwbTenantConfig> {

    /**
     * @param vo
     * @return
     * @Title: searchTenantConfig
     * @Description: 分页查询
     * @author DSY
     * @date 2022-12-30 16:00:28
     */
    public TwbPageInfo<SearchTenantConfigDto> searchTenantConfig(SearchTenantConfigVo vo);

    /**
     * @param vo
     * @return
     * @Title: searchTenantConfigSum
     * @Description: 列表查询合计（含查询条件）
     * @author DSY
     * @date 2022-12-30 16:00:28
     */
    public SearchTenantConfigDto searchTenantConfigSum(SearchTenantConfigVo vo);

    /**
     * @param vo
     * @return
     * @Title: saveTenantConfig
     * @Description: 保存信息
     * @author DSY
     * @date 2022-12-30 16:00:28
     */
    public boolean saveTenantConfig(SaveTenantConfigVo vo);

    /**
     * @param vo
     * @return
     * @Title: updateTenantConfigById
     * @Description: 更新信息
     * @author DSY
     * @date 2022-12-30 16:00:28
     */
    public boolean updateTenantConfigById(UpdateTenantConfigByIdVo vo);

    /**
     * @param ids
     * @return
     * @Title: deleteTenantConfigByIds
     * @Description: 批量删除信息
     * @author DSY
     * @date 2022-12-30 16:00:28
     */
    public boolean deleteTenantConfigByIds(String ids);

    /**
     * @param ids
     * @return
     * @Title: logicBatchDeleteTenantConfigByIds
     * @Description: 批量逻辑删除
     * @author DSY
     * @date 2022-12-30 16:00:28
     */
    public int logicBatchDeleteTenantConfigByIds(String ids);

    /**
     * @param exportExcelVo
     * @param searchVo
     * @return
     * @Title: exportExcel
     * @Description: 导出excel
     * @author DSY
     * @date 2022-12-30 16:00:28
     */
    public void exportExcel(SearchTenantConfigVo vo, HttpServletResponse response) throws Exception;

    /**
     * 获取企业微信应用ID
     *
     * @param domain 域
     * @return {@link String }
     * @author DHL
     * @date 2023-01-13 02:39:33
     */
    public String getWxCpAgentid(String domain);

	/**
	 * @Title initRedisTenantConfig
	 * @Description 初始化租户配置
	 * @param tenantId
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2023年1月16日 下午3:29:00
	 */
	boolean initRedisTenantConfig(String tenantId);

	/**
	 * @Title getRedisTenantConfigJson
	 * @Description 获取租户配置
	 * @param tenantId
	 * @param type
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2023年1月16日 下午3:29:42
	 */
	JSONObject getRedisTenantConfigJson(String tenantId, String type);
    /**
     * 得到微信企业号配置
     *
     * @param domain 域
     * @return {@link TenantConfigWxCpDto }
     * @author DHL
     * @date 2023-01-30 09:28:54
     */
    public TenantConfigWxCpDto getWxCpConfig(String domain);
}
